encyklopedia.space

Python 3.12

Python 3.12 – óbta wersja języka programowania Python, będąca kolejnym krokiem rozwoju gałęzi Python 3. Oficjalnie wydana w 2023 roku, wprowadza szereg usprawnień językowych, optymalizacji wydajnościowych oraz rozbudowę standardowej biblioteki. Wersja ta jest dostępna w implementacji CPython od numeru 3.12.0 aż po najnowsze poprawki bezpieczeństwa.

Historia i cykl wydawniczy

Rozwój Pythona 3.12 rozpoczął się w 2022 roku w ramach projektu PEP (Python Enhancement Proposals). Główne propozycje zmian zostały przyjęte w PEP 664 – „Release Schedule for Python 3.12”. Pierwsza stabilna wersja 3.12.0 trafiła do publicznego użytku 3 października 2023 roku.

Plan wydawania Python 3.12
Wersja Data wydania Typ
3.12.0 3 października 2023 stable
3.12.1 27 kwietnia 2024 security/bug‑fix
3.12.2 23 października 2024 maintenance

Główne nowości

  • Nowa składnia match 2.0 – rozszerzenie strukturalnego dopasowania wprowadzone w PEP 634 otrzymało dodatkowe możliwości, m.in. dopasowanie do list i dict przy użyciu znaków podkreślenia (_).
  • Typy Union w adnotacjach – od wersji 3.12 można używać operatora | bezpośrednio w adnotacjach typów (`int | None`), co upraszcza zapis PEP 484.
  • Wbudowany tomllib – parser plików TOML dostępny od razu w bibliotece standardowej, zgodny z TOML v1.0.
  • Szybsze działanie interpretera – optymalizacje w bytecode’ie (nowy opcode RESUME) oraz lepsza współpraca z GC, co w praktyce skraca czas wykonywania typowych skryptów o 5‑10 %.
  • Nowy moduł zoneinfo 2.0 – pełne wsparcie stref czasowych zgodne z bazą danych IANA.
  • Ulepszenia w asyncio – wprowadzono TaskGroup oraz lepszą integrację z trio i anyio.
  • Rozbudowane wsparcie dla platformy WebAssembly – nowa wersja CPython ma wbudowane możliwości kompilacji do WASM.

Zgodność i migracja

Python 3.12 zachowuje pełną kompatybilność wsteczną względem wersji 3.11, jednak niektóre przestarzałe funkcje zostały usunięte:

  • Moduł distutils został całkowicie wycofany; rekomenduje się setuptools lub Poetry.
  • Opcja -X oldparser nie jest już dostępna.
  • Metoda asyncio.Task.current_task() została uznana za przestarzałą – zamiast niej stosuje się asyncio.current_task().

Wydajność i optymalizacje

W CPython 3.12 wprowadzono trzy kluczowe zmiany wpływające na szybkość wykonywania kodu:

  1. Bytecode 2.0 – nowy format instrukcji umożliwia krótsze i bardziej zoptymalizowane odczyty.
  2. Zero‑cost exception handling – obsługa wyjątków nie wymaga już niepotrzebnych alokacji w przypadku niepowodzenia.
  3. Fast‑path dla wbudowanych typów – operacje na list, dict i set są realizowane przy mniejszej liczbie wywołań C‑API.

Rozwój biblioteki standardowej

Standardowa biblioteka w wersji 3.12 została rozbudowana o nowe moduły i aktualizacje istniejących:

  • statistics – wprowadzono funkcję median_grouped.
  • pathlib – dodano metodę read_text(encoding='utf‑8') z automatycznym wykrywaniem kodowania.
  • json – wsparcie dla encoderów obsługujących datetime i Decimal.
  • urllib – nowy podmoduł urllib.proxy‑ obsługa nowoczesnych protokołów proxy.

Ekosystem i przyjęcie

W ciągu pierwszych sześciu miesięcy po premierze Python 3.12 został przyjęty przez najważniejsze projekty open‑source:

  • Django 5.0 – wymaga minimum 3.10, ale rekomenduje 3.12 ze względu na poprawki w asyncio.
  • NumPy 2.0 – w pełni kompatybilny, wykorzystuje nowe API numpy.typing.
  • Pandas 2.2 – przyspieszone parsowanie CSV dzięki optymalizacjom w io.

Patrząc w przyszłość

W planach zespołu Python Developer znajduje się dalsze usprawnianie kompilatora CPython oraz rozwój alternatywnych implementacji, takich jak PyPy i RustPython. Najważniejsze kierunki rozwoju to:

  • Wprowadzenie optymalizacji w czasie rzeczywistym (JIT) do głównego interpretera.
  • Rozszerzenie PEP 681 – automatyczna generacja stubów typów.
  • Lepsza integracja z LLVM w kontekście cffi i ctypes.

Zobacz także